// 中等尺寸圆形悬浮按钮 - 空心三角形+双杠图标
var floatyController = {
    window: null,
    isPlaying: false,
    clickCount: 0,
    keepRunningThread: null,

    // 创建悬浮窗
    createWindow: function() {
        var window = floaty.rawWindow(
            <frame>
                <card id="button" w="60" h="60" cardCornerRadius="30" cardBackgroundColor="#88000000" cardElevation="8">
                    <relative w="*" h="*">
                        <text id="icon" text="▷" textColor="#FFFFFF" textSize="28sp" layout_centerInParent="true"/>
                    </relative>
                </card>
            </frame>
        );

        // 设置初始位置（靠近屏幕右边缘）
        window.setPosition(device.width - 100, device.height / 2);

        return window;
    },

    // 更新按钮图标 - 使用空心三角形+双杠图标
    updateIcon: function() {
        if (this.isPlaying) {
            this.window.icon.setText("Ṗ"); // 双杠暂停图标
            this.window.icon.setTextSize(22);
        } else {
            this.window.icon.setText("ᐒ"); // 空心三角形播放图标
            this.window.icon.setTextSize(28);
        }
    },

    // 初始化图标
    initIcon: function() {
        this.updateIcon();
    },

    // 设置点击事件处理
    setupClickHandler: function() {
        var self = this;
        this.window.button.on("click", function(){
            self.clickCount++;
            // 切换播放状态
            self.isPlaying = !self.isPlaying;
            // 更新图标
            self.updateIcon();
            
            // 根据状态显示提示（在独立线程中执行，避免阻塞UI）
            threads.start(function() {
                if (self.isPlaying) {
                    toast("开始播放 (" + self.clickCount + "次)");
                } else {
                    toast("暂停播放 (" + self.clickCount + "次)");
                }
            });
            
            // 达到15次点击后关闭
            if (self.clickCount >= 15) {
                // 在独立线程中显示toast，避免阻塞UI
                threads.start(function() {
                    toast("点击次数已达上限，悬浮窗即将关闭");
                });
                setTimeout(function(){
                    self.close();
                    exit();
                }, 2000);
            }
        });
    },

    // 设置拖动功能
    setupDragHandler: function() {
        var self = this;
        var startX = 0, startY = 0;
        var isMoving = false;

        this.window.button.on("touch_down", function(event){
            startX = event.getRawX();
            startY = event.getRawY();
            isMoving = false;
        });

        this.window.button.on("touch_move", function(event){
            var dx = event.getRawX() - startX;
            var dy = event.getRawY() - startY;
            
            // 判断是否为移动（移动距离超过10像素）
            if (!isMoving && (Math.abs(dx) > 10 || Math.abs(dy) > 10)) {
                isMoving = true;
            }
            
            // 如果是移动则更新位置
            if (isMoving) {
                self.window.setPosition(self.window.getX() + dx, self.window.getY() + dy);
                startX = event.getRawX();
                startY = event.getRawY();
            }
        });
    },

    // 启动悬浮窗
    start: function() {
        try {
            // 检查是否已经创建了悬浮窗
            if (this.window) {
                Logger.info("Floaty", "悬浮窗已存在，无需重复创建");
                return true;
            }
            
            // 创建悬浮窗
            this.window = this.createWindow();
            
            // 初始化图标
            this.initIcon();
            
            // 设置事件处理
            this.setupClickHandler();
            this.setupDragHandler();
            
            // 创建一个线程来保持脚本运行
            var self = this;
            this.keepRunningThread = threads.start(function() {
                while(true){
                    sleep(1000);
                }
            });
            
            // 在独立线程中显示toast，避免阻塞UI线程
            threads.start(function() {
                toast("中等尺寸按钮已启动，使用空心三角形+双杠图标");
            });
            return true;
        } catch (e) {
            Logger.error("Floaty", "启动悬浮窗失败: " + e.message);
            // 在独立线程中显示toast，避免阻塞UI线程
            threads.start(function() {
                toast("启动悬浮窗失败: " + e.message);
            });
            return false;
        }
    },
    
    // 关闭悬浮窗
    close: function() {
        try {
            if (this.window) {
                this.window.close();
                this.window = null;
            }
            if (this.keepRunningThread && this.keepRunningThread.isAlive()) {
                this.keepRunningThread.interrupt();
                this.keepRunningThread = null;
            }
            return true;
        } catch (e) {
            Logger.error("Floaty", "关闭悬浮窗失败: " + e.message);
            // 在独立线程中显示toast，避免阻塞UI线程
            threads.start(function() {
                toast("关闭悬浮窗失败: " + e.message);
            });
            return false;
        }
    },
    
    // 检查悬浮窗是否正在运行
    isRunning: function() {
        return this.window != null;
    }
};

// 导出模块（兼容不同环境）
if (typeof module !== 'undefined' && module.exports) {
    module.exports = floatyController;
} else if (typeof global !== 'undefined') {
    global.floatyController = floatyController;
} else if (typeof window !== 'undefined') {
    window.floatyController = floatyController;
}